package com.tianhao.luo.nouse.input_params_min;

import com.tianhao.luo.nouse.input_params_plus.Father;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Collection;
import java.util.HashMap;

/**
 * @ClassName: Son
 * @Description: 子类，输入参数缩小
 * @author: tianhao.luo@hand-china.com
 * @date: 2020/7/9  17:11
 */
public class Son extends Father {
    private static final Logger LOGGER = LoggerFactory.getLogger(com.tianhao.luo.nouse.input_params_plus.Son.class);
    /**
     * 缩小输入参数
     * 子类在没有覆写父类的方法的前提下，子类方法被执行了，
     * 这会引起业务逻辑混乱，因为在实际应用中父类一般都是抽象类，
     * 子类是实现类，你传递一个这样的实现类就会“歪曲”了父类的意图，
     * 引起一堆意想不到的业务逻辑混乱，所以子类中方法的前置条件
     * 必须与超类中被覆写的方法的前置条件相同或者更宽松。
     * @param map 参数
     * @return 集合
     */
    @Override
    public Collection doSomething(HashMap<String, String> map) {
        LOGGER.info("子类被执行：{}",this.getClass());
        return map.values();
    }
}
